import React, { FC, useEffect, useState } from 'react';
import { Input } from 'antd';

interface IProps {
  value?: any;
  onChange?: any;
}

function abc() {
  console.log('初始化默认值方法,走了');

  return [];
}

// 每次修改了状态之后,都会重新render
// 他首先会重新render value = abc()
// 每次重新render value 都会获得一个新的空数组(与之前不同)
// 所以每次重新render后,useEffect 都会监听到value的变化
const Demo: FC<IProps> = ({ value = abc() }) => {
  const [a, setA] = useState(0);

  useEffect(() => {
    console.log(a);
  }, [value]);

  const onChange = (e) => {
    setA((origin) => origin + 1);
  };

  return <Input onChange={onChange} placeholder="测试useEffect死循环" />;
};

export default Demo;
